import re


def parse_escaped_string(escaped_str):
    """
    解析包含转义字符的字符串。

    :param escaped_str: 包含转义字符的字符串（例如："Hello \\"World\\"" 会被解析为 "Hello \"World\""）
    :return: 解析后的字符串
    """
    # 定义一个字典来映射转义字符到它们的实际值
    escape_map = {
        '\\"': '"',
        '\\\\': '\\',
        '\\n': '\n',
        '\\r': '\r',
        '\\t': '\t',
        # 可以根据需要添加更多的转义字符映射
    }

    # 使用正则表达式找到所有的转义序列
    escaped_parts = re.findall(r'\\(.)', escaped_str)
    non_escaped_parts = re.split(r'\\(.)', escaped_str)

    # 构建解析后的字符串
    parsed_str = []
    for part, escaped in zip(non_escaped_parts, [''] + escaped_parts):
        parsed_str.append(part)
        if escaped:
            parsed_str.append(escape_map.get(escaped, escaped))  # 如果不是已知的转义字符，则保留原样

    # 去除字符串开始和结尾可能的多余空字符串（如果有的话）
    if parsed_str[0] == '':
        parsed_str.pop(0)
    if parsed_str[-1] == '':
        parsed_str.pop()

    return ''.join(parsed_str)


def extract_strings_from_source(file_path):
    """
    从源代码文件中提取所有字符串。

    :param file_path: 源代码文件的路径
    :return: 包含所有提取字符串的列表
    """
    strings = []
    string_pattern = r'"(?:\\.|[^\\"])*"'  # 匹配双引号之间的文本，包括转义字符

    with open(file_path, 'r', encoding='utf-8') as file:
        content = file.read()

        # 查找所有匹配的字符串
        matches = re.findall(string_pattern, content)

        # 解析每个匹配的字符串
        for match in matches:
            # 去除字符串两端的双引号
            escaped_str = match[1:-1]
            parsed_str = parse_escaped_string(escaped_str)
            strings.append(parsed_str)

    return strings


# 示例使用
source_file_path = 'source_code.txt'  # 替换为你的源代码文件路径
extracted_strings = extract_strings_from_source(source_file_path)
for string in extracted_strings:
    print(f'"{string}"')